/** @file lcv-structs.h 
 * Definiert spezifische Strukturen für die LCV
 * 
 * @author Daniel Kummer, Sebastian Kummer
 * @date Donnerstag, Dezember 12, 2007
 * @version 1.0
 */

#ifndef LCVSTRUCTS_H_
#define LCVSTRUCTS_H_

/**
 * Konfigurationsstruktur für LCV-Register
 * @param addr Registeradresse
 * @param min_val Minimalwert
 * @param max_val Maximalwert
 * @param default_val Standardwert
 */
typedef struct {
    unsigned char	addr;
    unsigned short   min_val;
    unsigned short   max_val;
    unsigned short   default_val;
}lcv_reg_config;

/**
 * Alias für GPIO Port dev Adressen
 */
typedef char* lcv_gpio_config;


/**
 * Mögliche Bildtypen, 24Bit BGR Bitmap oder 8Bit Graustufen Bitmap
 */
enum image_types{IMG_BGR = 24, IMG_GRAYSCALE = 8};
typedef enum image_types image_type;

/**
 * Bilderstruktur für unsigned 8-bit Bilder
 * @param data Bilddaten, bzw. Pixelinformationen
 * @param length Anzahl der Pixel im data-Array
 * @param width Breite des Bildes (x-Achse)
 * @param height Höhe des Bildes (y-Achse)
 * @param type Bildtyp, entweder BGR oder GRAYSCALE
 */
typedef struct {
	unsigned char* data;
	unsigned int length;
	unsigned short width;
	unsigned short height;
	image_type type;
}lcv_picture;

/**
 * Pixelstruktur für BGR Pixel
 */
typedef struct {
		unsigned char B;
		unsigned char G;
 		unsigned char R;
} lcv_pixel_bgr; 

/**
 * Typendefinition für Graustufen Pixelwert
 */
typedef unsigned char lcv_pixel_gray;

#endif /*LCVSTRUCTS_H_*/
